--- 模块功能：GC 9A01驱动芯片LCD命令配置
-- @author Dozingfiretruck
-- @module ui.color_std_spi_gc9a01
-- @license MIT
-- @copyright openLuat
-- @release 2020.12.11

--[[
注意：disp库目前支持I2C接口和SPI接口的屏，此文件的配置，硬件上使用的是标准的SPI引脚，不是LCD专用的SPI引脚
硬件连线图如下：
Air模块 LCD
GND--地
SPI_CS--片选
SPI_CLK--时钟
SPI_DO--数据
SPI_DI--数据/命令选择
VDDIO--电源
CTS--复位
]]

module(...,package.seeall)

--[[
函数名：init
功能  ：初始化LCD参数
参数  ：无
返回值：无
]]
local function init()
    local para =
    {
        width = 240, --分辨率宽度，240像素；用户根据屏的参数自行修改
        height = 240, --分辨率高度，240像素；用户根据屏的参数自行修改
        bpp = 16, --位深度，彩屏仅支持16位
        bus = disp.BUS_SPI4LINE, --LCD专用SPI引脚接口，不可修改
        xoffset = 0, --X轴偏移
        yoffset = 0, --Y轴偏移
        freq = 13000000, --spi时钟频率，支持110K到13M（即110000到13000000）之间的整数（包含110000和13000000）
        hwfillcolor = 0xFFFFFF, --填充色，黑色
        pinrst = pio.P0_6, --reset，复位引脚
        pinrs = pio.P0_1, --rs，命令/数据选择引脚
        --初始化命令
        --前两个字节表示类型：0001表示延时，0000或者0002表示命令，0003表示数据
        --延时类型：后两个字节表示延时时间（单位毫秒）
        --命令类型：后两个字节命令的值
        --数据类型：后两个字节数据的值
        initcmd =
        {
            0x000200EF,
            0x000200EB,
            0x00030014,

            0x000200FE,
            0x000200EF,

            0x000200EB,
            0x00030014,

            0x00020084,
            0x00030040,

            0x00020085,
            0x000300FF,

            0x00020086,
            0x000300FF,

            0x00020087,
            0x000300FF,

            0x00020088,
            0x0003000A,

            0x00020089,
            0x00030021,

            0x0002008A,
            0x00030000,

            0x0002008B,
            0x00030080,

            0x0002008C,
            0x00030001,

            0x0002008D,
            0x00030001,

            0x0002008E,
            0x000300FF,

            0x0002008F,
            0x000300FF,

            0x000200B6,
            0x00030000,
            0x00030020,

            0x00020036,
            0x00030008,
            --0x000300C8,
            --0x00030068,
            --0x000300A8,

            0x0002003A,
            0x00030005,

            0x00020090,
            0x00030008,
            0x00030008,
            0x00030008,
            0x00030008,

            0x000200BD,
            0x00030006,

            0x000200BC,
            0x00030000,

            0x000200FF,
            0x00030060,
            0x00030001,
            0x00030004,

            0x000200C3,
            0x00030013,
            0x000200C4,
            0x00030013,

            0x000200C9,
            0x00030022,

            0x000200BE,
            0x00030011,

            0x000200E1,
            0x00030010,
            0x0003000E,

            0x000200DF,
            0x00030021,
            0x0003000C,
            0x00030002,

            0x000200F0,
            0x00030045,
            0x00030009,
            0x00030008,
            0x00030008,
            0x00030026,
            0x0003002A,

            0x000200F1,
            0x00030043,
            0x00030070,
            0x00030072,
            0x00030036,
            0x00030037,
            0x0003006F,

            0x000200F2,
            0x00030045,
            0x00030009,
            0x00030008,
            0x00030008,
            0x00030026,
            0x0003002A,

            0x000200F3,
            0x00030043,
            0x00030070,
            0x00030072,
            0x00030036,
            0x00030037,
            0x0003006F,

            0x000200ED,
            0x0003001B,
            0x0003000B,

            0x000200AE,
            0x00030077,

            0x000200CD,
            0x00030063,

            0x00020070,
            0x00030007,
            0x00030007,
            0x00030004,
            0x0003000E,
            0x0003000F,
            0x00030009,
            0x00030007,
            0x00030008,
            0x00030003,

            0x000200E8,
            0x00030034,

            0x00020062,
            0x00030018,
            0x0003000D,
            0x00030071,
            0x000300ED,
            0x00030070,
            0x00030070,
            0x00030018,
            0x0003000F,
            0x00030071,
            0x000300EF,
            0x00030070,
            0x00030070,

            0x00020063,
            0x00030018,
            0x00030011,
            0x00030071,
            0x000300F1,
            0x00030070,
            0x00030070,
            0x00030018,
            0x00030013,
            0x00030071,
            0x000300F3,
            0x00030070,
            0x00030070,

            0x00020064,
            0x00030028,
            0x00030029,
            0x000300F1,
            0x00030001,
            0x000300F1,
            0x00030000,
            0x00030007,

            0x00020066,
            0x0003003C,
            0x00030000,
            0x000300CD,
            0x00030067,
            0x00030045,
            0x00030045,
            0x00030010,
            0x00030000,
            0x00030000,
            0x00030000,

            0x00020067,
            0x00030000,
            0x0003003C,
            0x00030000,
            0x00030000,
            0x00030000,
            0x00030001,
            0x00030054,
            0x00030010,
            0x00030032,
            0x00030098,

            0x00020074,
            0x00030010,
            0x00030085,
            0x00030080,
            0x00030000,
            0x00030000,
            0x0003004E,
            0x00030000,

            0x00020098,
            0x0003003E,
            0x00030007,

            0x00020035,
            0x00020021,

            0x00020011,
            0x00010060,
            0x00010060,
            0x00020029,
            0x00010020,
        },
        --休眠命令
        sleepcmd = {
            0x00020010,
        },
        --唤醒命令
        wakecmd = {
            0x00020011,
        }
    }
    disp.init(para)
    disp.clear()
    disp.update()
end

--控制SPI引脚的电压域
pmd.ldoset(15,pmd.LDO_VLCD)
init()

--打开背光
--实际使用时，用户根据自己的lcd背光控制方式，添加背光控制代码
